/**
 *\file mainTest.c
 *\author Raphaël Diana
 */
#include "liste.h"
#include "joueur.h"
#include "maison.h"

void testSabot()
{
    Sabot* sabot;
    sabot=initSabot();
    printf("sabot initialise\n");
    afficherTalon(sabot->talon);
    detruitSabot(&sabot);
    printf("well done!\n");
}

void testHand()
{
    Liste *main1;
    Liste *main2;
    Liste *main3;
    Carte carte1, carte2, carte3, carte4, carte5, carte6, carte7;
    setCouleurCarte(&carte1, CARREAU);
    setCouleurCarte(&carte2, PIQUE);
    setCouleurCarte(&carte3, COEUR);
    setCouleurCarte(&carte4, TREFLE);
    setCouleurCarte(&carte5, COEUR);
    setCouleurCarte(&carte6, COEUR);
    setCouleurCarte(&carte7, CARREAU);
    setFaceCarte(&carte1, DAME);
    setFaceCarte(&carte2, AS);
    setFaceCarte(&carte3, VALET);
    setFaceCarte(&carte4, AS);
    setFaceCarte(&carte5, AS);
    setFaceCarte(&carte6, VALET);
    setFaceCarte(&carte7, SIX);
    main1=initListe();
    main2=initListe();
    printf("## Initialisation faite\n");
    printf("\nnb de carte main1=%u\n", testNombreCarte(main1));
    insertElement(main1, &carte1);
    printf("nb de carte main1=%u\n", testNombreCarte(main1));
    insertElement(main1, &carte2);
    printf("nb de carte main1=%u\n", testNombreCarte(main1));
    insertElement(main1, &carte3);
    printf("nb de carte main1=%u\n", testNombreCarte(main1));
    insertElement(main2, &carte4);
    insertElement(main2, &carte5);
    printf("\n---- Main 1 -----\n");
    afficheMain(main1);
    printf("\n---- Main 2 -----\n");
    afficheMain(main2);
    afficherCarte(main2->ad->info);
    getInfo(main2,1);
    getInfo(main2,2);
    main3=separeListe(main2);
    printf("\n## Separation OK\n");
    insertElement(main2, &carte6);
    insertElement(main3, &carte7);
    printf("\n---- Main 2 -----\n");
    afficheMain(main2);
    printf("\n---- Main 3 -----\n");
    afficheMain(main3);
    printf("\nnb carte Main 3 =%u\n",testNombreCarte(main3));
    printf("## Affichage OK\n");
    valeurMain(main1);
    valeurMain(main2);
    valeurMain(main3);
    printf("\nValeur Main 1=%u\n", getValeurMain(main1));
    printf("Valeur Main 2=%u\n", getValeurMain(main2));
    printf("Valeur Main 3=%u\n", getValeurMain(main3));
    printf("Blackjack Main 1=%u\n", testBlackjack(main1));
    printf("Blackjack Main 2=%u\n", testBlackjack(main2));
    testamentListe(&main1);
    testamentListe(&main2);
    testamentListe(&main3);
    printf("\n## Liberation faite\n");
    printf("\n## Destruction faite\n");
}

void testListe()
{
    Liste *l=initListe();
    Carte * c;
    Carte carte1, carte2, carte3, carte4, carte5, carte6, carte7;

    printf("\n##---------------------- Init ---------------------##\n");

    setCouleurCarte(&carte1, CARREAU);
    setCouleurCarte(&carte2, PIQUE);
    setCouleurCarte(&carte3, COEUR);
    setCouleurCarte(&carte4, TREFLE);
    setCouleurCarte(&carte5, COEUR);
    setCouleurCarte(&carte6, COEUR);
    setCouleurCarte(&carte7, CARREAU);
    setFaceCarte(&carte1, DAME);
    setFaceCarte(&carte2, AS);
    setFaceCarte(&carte3, VALET);
    setFaceCarte(&carte4, AS);
    setFaceCarte(&carte5, AS);
    setFaceCarte(&carte6, VALET);
    setFaceCarte(&carte7, SIX);

    afficheListe(l);

    printf("\n##---------------------- Insertion ---------------------##\n");
    insertElement(l,&carte1);
    insertElement(l,&carte2);
    insertElement(l,&carte3);
    insertElement(l,&carte4);
    insertElement(l,&carte5);
    insertElement(l,&carte6);
    insertElement(l,&carte7);

    afficheListe(l);
    printf("\n##---------------------- Supression ---------------------##\n");
    supprElement(l);
    afficheListe(l);
    printf("Retire\n");
    c=retireEnTete(l);
    afficherCarte(c);
    printf("\n");
    afficheListe(l);
    printf("\n##---------------------- Testament ---------------------##\n");
    testamentListe(&l);
}

void testJoueur()
{
    Joueur* joueur;
    int i;
    joueur=creerJoueur();
    initJeuJoueur(joueur);
    crediteJoueur(joueur, 539);
    printf("credit du joueur = %1.f\n", joueur->credit);
    for(i=0; i<12; i++)
    {
        printf("indice %i = %u\n", i, joueur->jeu[i].indice);
    }
    placeMise(joueur, 31, 0);
    printf("\nLe joueur a placer une mise\n");
    printf("\n##---------------------- Placement fait ---------------------##\n");
    printf("\nMise = %u\n", joueur->jeu[0].mise);
    prendreAssurance(joueur, &joueur->jeu[0], 1);
    printf("\n##--------------------- Assurance prise ---------------------##\n");
    printf("\nAssurance = %1.f\n", joueur->jeu[0].assurance);
    testamentJoueur(&joueur);
    printf("\n##------------------------- Fin Test ------------------------##\n");
}

int main()
{
    testJoueur();
    return 0;
}
